class Solution {
public:
    int totalFruit(vector<int>& fruits) {
        int left = 0;
        int right = 0;
        unordered_map<int, int> _map;
        int count = 0;
        while (right < fruits.size())
        {
            _map[fruits[right]]++;
            while (_map.size() > 2 && left < right)
            {
                _map[fruits[left]]--;
                if (_map[fruits[left]] == 0)
                {
                    _map.erase(fruits[left]);
                }
                left++;
            }
            count = max(count, right - left + 1);
            // if(_map.size() <= 2)
            // {
            //     for(auto e : _map)
            //     {
            //         count += e.second;
            //     }
            //     sum = max(count,sum);
            //     count = 0;
            // }
            right++;
        }
        return count;
    }
};